home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 1 / QRZ Ham Radio Callsign Database - December 1993.iso / ucsd / packet / tcpip / amiga / asrc29k.lha / icmp.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-01-08  |  4.4 KB  |  126 lines

  1. #ifndef    ICMP_ECHO_REPLY
  2.  
  3. #include "global.h"
  4. #include "internet.h"
  5.  
  6. /* SNMP MIB variables, used for statistics and control. See RFC 1066 */
  7. extern struct mib_entry Icmp_mib[];
  8. #define    icmpInMsgs        Icmp_mib[1].value.integer
  9. #define    icmpInErrors        Icmp_mib[2].value.integer
  10. #define icmpInDestUnreachs    Icmp_mib[3].value.integer
  11. #define icmpInTimeExcds        Icmp_mib[4].value.integer
  12. #define icmpInParmProbs        Icmp_mib[5].value.integer
  13. #define icmpInSrcQuenchs    Icmp_mib[6].value.integer
  14. #define icmpInRedirects        Icmp_mib[7].value.integer
  15. #define icmpInEchos        Icmp_mib[8].value.integer
  16. #define icmpInEchoReps        Icmp_mib[9].value.integer
  17. #define icmpInTimestamps    Icmp_mib[10].value.integer
  18. #define icmpInTimestampReps    Icmp_mib[11].value.integer
  19. #define icmpInAddrMasks        Icmp_mib[12].value.integer
  20. #define icmpInAddrMaskReps    Icmp_mib[13].value.integer
  21. #define icmpOutMsgs        Icmp_mib[14].value.integer
  22. #define icmpOutErrors        Icmp_mib[15].value.integer
  23. #define icmpOutDestUnreachs    Icmp_mib[16].value.integer
  24. #define icmpOutTimeExcds    Icmp_mib[17].value.integer
  25. #define icmpOutParmProbs    Icmp_mib[18].value.integer
  26. #define icmpOutSrcQuenchs    Icmp_mib[19].value.integer
  27. #define icmpOutRedirects    Icmp_mib[20].value.integer
  28. #define icmpOutEchos        Icmp_mib[21].value.integer
  29. #define icmpOutEchoReps        Icmp_mib[22].value.integer
  30. #define icmpOutTimestamps    Icmp_mib[23].value.integer
  31. #define icmpOutTimestampReps    Icmp_mib[24].value.integer
  32. #define icmpOutAddrMasks    Icmp_mib[25].value.integer
  33. #define icmpOutAddrMaskReps    Icmp_mib[26].value.integer
  34. #define    NUMICMPMIB    26
  35.  
  36. /* Internet Control Message Protocol */
  37.  
  38. /* Message types */
  39. #define    ICMP_ECHO_REPLY        0    /* Echo Reply */
  40. #define    ICMP_DEST_UNREACH    3    /* Destination Unreachable */
  41. #define    ICMP_QUENCH        4    /* Source Quench */
  42. #define    ICMP_REDIRECT        5    /* Redirect */
  43. #define    ICMP_ECHO        8    /* Echo Request */
  44. #define    ICMP_TIME_EXCEED    11    /* Time-to-live Exceeded */
  45. #define    ICMP_PARAM_PROB        12    /* Parameter Problem */
  46. #define    ICMP_TIMESTAMP        13    /* Timestamp */
  47. #define    ICMP_TIME_REPLY        14    /* Timestamp Reply */
  48. #define    ICMP_INFO_RQST        15    /* Information Request */
  49. #define    ICMP_INFO_REPLY        16    /* Information Reply */
  50. #define    ICMP_ADDR_MASK        17    /* Address mask request */
  51. #define    ICMP_ADDR_MASK_REPLY    18    /* Address mask reply */
  52. #define    ICMP_TYPES        19
  53.  
  54. /* Internal format of an ICMP header (checksum is missing) */
  55. struct icmp {
  56.     char type;
  57.     char code;
  58.      union icmp_args {
  59.         int32 unused;
  60.         unsigned char pointer;
  61.         int32 address;
  62.         struct {
  63.             int16 id;
  64.             int16 seq;
  65.         } echo;
  66.     } args;
  67. };
  68. #define    ICMPLEN        8    /* Length of ICMP header on the net */
  69. #define    NULLICMP    (union icmp_args *)0
  70.     
  71. /* Destination Unreachable codes */
  72. #define    ICMP_NET_UNREACH    0    /* Net unreachable */
  73. #define    ICMP_HOST_UNREACH    1    /* Host unreachable */
  74. #define    ICMP_PROT_UNREACH    2    /* Protocol unreachable */
  75. #define    ICMP_PORT_UNREACH    3    /* Port unreachable */
  76. #define    ICMP_FRAG_NEEDED    4    /* Fragmentation needed and DF set */
  77. #define    ICMP_ROUTE_FAIL        5    /* Source route failed */
  78.  
  79. #define    NUNREACH    6
  80.  
  81. /* Time Exceeded codes */
  82. #define    ICMP_TTL_EXCEED        0    /* Time-to-live exceeded */
  83. #define    ICMP_FRAG_EXCEED    1    /* Fragment reassembly time exceeded */
  84.  
  85. #define    NEXCEED        2
  86.  
  87. /* Redirect message codes */
  88. #define    ICMP_REDR_NET    0    /* Redirect for the network */
  89. #define    ICMP_REDR_HOST    1    /* Redirect for the host */
  90. #define    ICMP_REDR_TOS    2    /* Redirect for Type of Service, or-ed with prev */
  91.  
  92. #define    NREDIRECT    3
  93.  
  94. extern int Icmp_trace;
  95.  
  96. struct ping {
  97.     struct session *sp;
  98.     int32 target;        /* Starting target IP address */
  99.     int incflag;        /* If true, increment target after each ping */
  100.     int32 sent;        /* Total number of pings sent */
  101.     int32 srtt;        /* Smoothed round trip time */
  102.     int32 mdev;        /* Mean deviation */
  103.     int32 responses;    /* Total number of responses */
  104.     int32 interval;        /* Inter-ping interval, ticks */
  105.     int16 len;        /* Length of data portion of ping */
  106. };
  107. /* ICMP messages, decoded */
  108. extern char *Icmptypes[],*Unreach[],*Exceed[],*Redirect[];
  109.  
  110. /* In icmp.c: */
  111. void icmp_input __ARGS((struct mbuf *bp,struct ip *ip,int rxbroadcast));
  112. int icmp_output __ARGS((struct ip *ip,struct mbuf *data,char type,char code,
  113.     union icmp_args *args));
  114.  
  115. /* In icmpcmd.c: */
  116. void echo_proc __ARGS((int32 source,int32 dest,struct icmp *icmp,struct mbuf *bp));
  117. int pingem __ARGS((int s,int32 target,int16 seq,int16 id,int16 len));
  118.  
  119. /* In icmphdr.c: */
  120. struct mbuf *htonicmp __ARGS((struct icmp *icmp,struct mbuf *data));
  121. int ntohicmp __ARGS((struct icmp *icmp,struct mbuf **bpp));
  122.  
  123. #endif    /* ECHO_REPLY */
  124.  
  125.  
  126.